﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities.Auditing;

namespace SanJ.FreeCare.HealthcareServices
{
    public class HealthcareService : AuditedAggregateRoot<Guid>
    {
        /// <summary>
        /// External identifiers for this item
        /// 有效性
        /// </summary>
        public bool IsActive { get; set; }

        /// <summary>
        /// Organization that provides this service
        /// 提供此服务的组织(院区ID)
        /// </summary>
        public Guid OrganizationId { get; set; }

        /// <summary>
        /// The service within which this service is offered
        /// 提供该服务的部门（科室物理位置集合）
        /// </summary>
        public Guid[] HealthcareServiceId { get; set; }

        /// <summary>
        /// Location(s) where service may be provided
        /// 可提供服务的地点（科室ID集合）
        /// </summary>
        public Guid[] LocationId { get; set; }

        /// <summary>
        /// Broad category of service being performed or delivered
        /// 提供的服务类别 诊疗 数据支持
        /// </summary>
        public string[] CategoryCode { get; set; }

        /// <summary>
        /// Type of service that may be delivered or performed
        /// 可提供或执行的服务类型
        /// </summary>
        public string[] TypeCode { get; set; }

        /// <summary>
        /// Specialties handled by the HealthcareService
        /// 医疗保健服务部处理的特殊服务
        /// </summary>
        public string[] SpecialtyCode { get; set; }

        /// <summary>
        /// Description of service as presented to a consumer while searching
        /// 消费者在搜索时看到的服务描述)（项目名称 eg：主任医师普通门诊 副主任医师普通门诊等）
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Additional description and/or any specific issues not covered elsewhere
        /// 补充说明和/或其他地方未涉及的任何具体问题
        /// </summary>
        public string Comment { get; set; }

        /// <summary>
        /// Extra details about the service that can't be placed in the other fields
        /// 无法填入其他字段的有关服务的其他详细信息
        /// </summary>
        public string ExtraDetails { get; set; }

        /// <summary>
        /// Facilitates quick identification of the service
        /// 便于快速识别服务
        /// </summary>
        public string PhotoCode { get; set; }

        /// <summary>
        /// Official contact details for the HealthcareService
        /// 医疗保健服务的官方联系方式
        /// </summary>
        public string[] ContactCode { get; set; }

        /// <summary>
        /// Location(s) service is intended for/available to
        /// 服务对象/服务范围
        /// </summary>
        public Guid[] CoverageAreaID { get; set; }

        /// <summary>
        /// Conditions under which service is available/offered
        /// 提供服务的条件
        /// </summary>
        public Guid[] ServiceProvisionCode { get; set; }

        /// <summary>
        /// Specific eligibility requirements required to use the service
        /// 使用服务所需的具体资格要求
        /// </summary>
        public Guid[] EligibilityCode { get; set; }

        /// <summary>
        /// Describes the eligibility conditions for the service
        /// 说明服务的资格条件
        /// </summary>
        public string EligibilityComment { get; set; }

        /// <summary>
        /// Programs that this service is applicable to
        /// 本服务适用的计划
        /// </summary>
        public string[] ProgramCode { get; set; }

        /// <summary>
        /// Collection of characteristics (attributes)
        /// 特征（属性）集合
        /// </summary>
        public string[] CharacteristicCode { get; set; }

        /// <summary>
        /// The language that this service is offered in
        /// 这项服务所使用的语言
        /// </summary>
        public string[] CommunicationCode { get; set; }

        /// <summary>
        /// Ways that the service accepts referrals
        /// 服务机构接受转介的方式
        /// </summary>
        public string[] ReferralMethodCode { get; set; }

        /// <summary>
        /// An appointment is required for access to this service
        /// 使用该服务需要预约
        /// </summary>
        public bool AppointmentRequired { get; set; }

        /// <summary>
        /// Times the healthcare service is available (including exceptions)
        /// 提供医疗服务的时间（包括例外情况）（绑定的预约时间条件）
        /// </summary>
        public Guid[] AvailabilityId { get; set; }

    }
}
